Expand description
tree_magic_mini
is a Rust crate that determines the MIME type a given file or byte stream.
This is a fork of the tree_magic crate by Allison Hancock. It includes the following changes:
- Updated dependencies.
- Reduced copying and memory allocation, for a slight increase in speed and decrease in memory use.
- Reduced API surface. Some previously public APIs are now internal.
- Removed the optional
cli
feature andtmagic
binary.
§About tree_magic
tree_magic
is designed to be more efficient and to have less false positives compared
to the old approach used by libmagic
, or old-fashioned file extension comparisons.
Instead, this loads all known MIME types into a tree based on subclasses. Then, instead
of checking against every file type, tree_magic
will traverse down the tree and
only check the files that make sense to check.
§Features
- Very fast perfomance (~150ns to check one file against one type, between 5,000ns and 100,000ns to find a MIME type.)
- Check if a file is a certain type.
- Handles aliases (ex:
application/zip
vsapplication/x-zip-compressed
) - Can delegate different file types to different “checkers”, reducing false positives by choosing a different method of attack.
§Licensing and the MIME database
By default, tree_magic_mini
will attempt to load the shared MIME info
database from the standard locations at runtime.
If you won’t have the database files available, or would like to include them
in your binary for simplicity, you can optionally embed the database
information if you enable the tree_magic_db
feature.
As the magic database files themselves are licensed under the GPL, you must make sure your project uses a compatible license if you enable this behaviour.
§Example
// Load a GIF file
let input: &[u8] = include_bytes!("../tests/image/gif");
// Find the MIME type of the GIF
let result = tree_magic_mini::from_u8(input);
assert_eq!(result, "image/gif");
// Check if the MIME and the file are a match
let result = tree_magic_mini::match_u8("image/gif", input);
assert_eq!(result, true);
Functions§
- Gets the MIME type of a file.
- Gets the MIME type of a file.
- Gets the type of a file from a byte stream.
- Check if the given file matches the given MIME type.
- Check if the file at the given path matches the given MIME type.
- Checks if the given bytestream matches the given MIME type.